
//todo
// 假设有k个人质和k个绑匪围成一圈。人质的编号从1到k，绑匪的编号从k+1到2k。
// 从编号1开始，每次从其中选出第m个人(隔m-1选出一人)出列。
// 希望求出m的最小值，使得最先出列的k个人都是绑匪，即都是编号从k+1到2k的人。
#include "iostream"
#include "vector"
#include "unordered_map"
#include "algorithm"

bool is_huiwen(int a,int jinzhi){
    int ws=1;
    int a_cpy=a;
    while(a){
        a/=jinzhi;
        ws*=jinzhi;
    }
    a=a_cpy;
    ws/=jinzhi;
    while(ws>1){
        int begin=a/ws;
        int end=a%jinzhi;
        if(begin!=end){
            return false;
        }
        a%=ws;
        a/=jinzhi;
        ws/=jinzhi*jinzhi;
    }
    return true;
}

int main() {
    int n,s=0;
//    is_huiwen(1441,10);
    while (std::cin >> n>>s) {
        int test=s+1;
        while(n){
            int cnt=0;
            for(int i=2;i<=10;i++){
                if(is_huiwen(test,i)){
                    cnt++;
                    if(cnt==2){
                        printf("%d\n",test);
                        n--;
                        break;
                    }
                }
            }
            test++;
        }
    }
//    while(1){}
    return 0;
}